package com.cw2.behavioral.memento;

import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.util.Random;

/**
 * 游戏者
 */
@Data
public class LeiGamer {
    /**
     * 内部状态，用来进行信息保存
     */
    Integer coin;// 剩余金币
    Integer hp;// 血量
    Integer mp;// 蓝量
    Integer level;// 等级

    // 游戏服务器
    GameServer gameServer = new GameServer();

    /**
     * 从备忘录中获取信息
     */
    LeiGamer getFormMemento(Integer id){
        System.out.println("获取存档信息。。。。");
        return  gameServer.getRecord(id);
    }

    /**
     * 玩游戏
     */
    void playGame(){
        int i = new Random().nextInt();
        System.out.println("......(〃'▽'〃)......"+i);
        coin = i;
        hp = i;
        mp = i;
        level = i;
    }

    /**
     * 退出游戏
     */
    void exitGame(){
        System.out.println("退出&存档");
        saveGameRecord();
    }

    /**
     * 存档
     */
    void saveGameRecord() {
        System.out.println("正在保存当前记录。。。");
        GameRecord gameRecord = new GameRecord();

        // 数据转换
        BeanUtils.copyProperties(this, gameRecord);
        gameServer.add(gameRecord);
        System.out.println("存档成功。。。");
    }

}
